class DispatchPrompts:
    """调度相关的提示词模板"""
    
    SYSTEM_PROMPT = """
    你是一个专业的滴滴出行智能调度助手，具备以下能力：
    
    1. 数据分析：能够分析司机历史接单数据，识别行为模式
    2. 相似度计算：基于司机行为特征计算相似度，找出相似司机群体
    3. 区域推荐：基于相似司机的成功经验，推荐最佳接单区域
    
    工作原则：
    - 数据驱动：所有推荐都基于历史数据分析
    - 个性化：考虑每个司机的具体情况和偏好
    - 实用性：推荐结果要具有实际操作价值
    - 准确性：确保分析结果的准确性和可靠性
    
    请始终保持专业、准确、有用的回答风格。
    """
    
    DISPATCH_RECOMMENDATION_PROMPT = """
    请为司机ID {driver_id} 在 {time_category} 时段推荐最佳接单区域。
    
    分析要求：
    1. 收集该司机最近{days}天的历史接单数据
    2. 基于接单行为模式，找出最相似的{top_k}个司机
    3. 分析相似司机在{time_category}时段的成功经验
    4. 推荐前{top_areas}个最佳接单区域
    
    输出要求：
    - 提供详细的数据分析过程
    - 说明相似司机的选择依据
    - 解释每个推荐区域的理由
    - 给出具体的行动建议
    
    请按照工具使用顺序执行：data_collection → similarity_calculation → area_recommendation
    """
    
    DATA_COLLECTION_PROMPT = """
    收集司机历史接单数据，参数设置：
    - 时间范围：最近{days}天
    - 数据维度：司机ID、区域ID、接单数量、时段分类
    - 输出文件：{output_file}
    
    请确保数据的完整性和准确性。
    """
    
    SIMILARITY_CALCULATION_PROMPT = """
    计算司机行为相似度，参数设置：
    - 目标司机：{target_driver_id}
    - 相似司机数量：前{top_k}个
    - 特征维度：区域-时段组合特征
    
    使用余弦相似度算法，确保结果的可解释性。
    """
    
    AREA_RECOMMENDATION_PROMPT = """
    基于相似司机经验推荐最佳区域，参数设置：
    - 目标时段：{time_category}
    - 推荐区域数量：前{top_areas}个
    - 评分权重：订单量40% + 平均表现30% + 司机多样性20% + 活跃度10%
    
    为每个推荐区域提供详细的推荐理由。
    """
    
    ERROR_HANDLING_PROMPT = """
    在执行过程中遇到了错误：{error_message}
    
    请分析可能的原因：
    1. 数据不足：目标司机历史数据太少
    2. 参数错误：输入参数格式不正确
    3. 系统异常：数据库连接或文件操作问题
    
    建议的解决方案：
    - 检查司机ID是否存在
    - 调整时间范围参数
    - 验证数据文件完整性
    """
    
    @classmethod
    def get_dispatch_prompt(cls, driver_id, time_category="morning_peak", days=7, top_k=10, top_areas=5):
        """获取调度推荐提示词"""
        return cls.DISPATCH_RECOMMENDATION_PROMPT.format(
            driver_id=driver_id,
            time_category=time_category,
            days=days,
            top_k=top_k,
            top_areas=top_areas
        )
    
    @classmethod
    def get_data_collection_prompt(cls, days=7, output_file="driver_order_data.csv"):
        """获取数据收集提示词"""
        return cls.DATA_COLLECTION_PROMPT.format(
            days=days,
            output_file=output_file
        )
    
    @classmethod
    def get_similarity_prompt(cls, target_driver_id, top_k=10):
        """获取相似度计算提示词"""
        return cls.SIMILARITY_CALCULATION_PROMPT.format(
            target_driver_id=target_driver_id,
            top_k=top_k
        )
    
    @classmethod
    def get_recommendation_prompt(cls, time_category="morning_peak", top_areas=5):
        """获取区域推荐提示词"""
        return cls.AREA_RECOMMENDATION_PROMPT.format(
            time_category=time_category,
            top_areas=top_areas
        )
    
    @classmethod
    def get_error_prompt(cls, error_message):
        """获取错误处理提示词"""
        return cls.ERROR_HANDLING_PROMPT.format(
            error_message=error_message
        )
